package Modelo;


import Controlador.FrenoDeManoBase;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import java.util.Vector;



public class Base extends Figuras{
        Vector<Figuras> fig;
	private static final long serialVersionUID = 8L;
        public boolean libre=true;
        protected FrenoDeManoBase freno_de_mano;
        //Escenario escenario;
      
	public Base(Integer id0, Integer x0,Integer y0,Integer w0,Integer h0,Color c,Integer vida, Boolean estado){

	     super(id0, x0,y0,h0,w0,c,vida,estado);
                //escenario = es;
                //fig=es.getFigura();
               
	}

        public void cargarMovil(Autito auto){

/*Cuando un móvil pudo ingresar a la base éste es cargado con mercaderia */

            auto.setCarga();
        }
       
        
        @Override
        public void dibujar(Graphics grafico) {

            grafico.setColor(color);
            grafico.fillRect(x, y, ancho, alto);
	}

	@Override
	public void colision(Figuras figura) {

		 figura.colision(this);
	}

        @Override
        public synchronized void colision(Autito movil) {                                                       
               
                 freno_de_mano = new FrenoDeManoBase();
                
                    while(libre==true&&!movil.carga){

                            libre=false;
 	                    movil.setCarga();
       
                            freno_de_mano.setAutito(movil);
                            freno_de_mano.setBase(this);
                            
                            //temporizacion mediante un hilo
                            freno_de_mano.start();                      
 	                    break;
 	                }
 	                while(!libre){
                            System.out.println("la base está ocupada y otro auto quiso entrar\n");
                            movil.rebota();
                        break;
 	                }
                        while(movil.carga){
                            System.out.println("ya estás cargado, piscuí!\n");
                            movil.rebota();
                        break;
 	                }
         }

        @Override
        public void colision(Pared pared) {

            throw new UnsupportedOperationException("Not supported yet.");
        }

        @Override
        public void colision(Base base) {

            throw new UnsupportedOperationException("Not supported yet.");
        }

        @Override
        public void colision(Destino destino) {

            throw new UnsupportedOperationException("Not supported yet.");
        }

          @Override
            public void colision(Policia policia) {
            Integer x0=policia.x; //guardo posiciones actuales
            Integer y0=policia.y;

            policia.x-=(policia.x-policia.xAnterior);
            policia.y-=(policia.y-policia.yAnterior);

            policia.xAnterior=x0; //posiciones antes del choque
            policia.yAnterior=y0;

            //Ahora necesito que cambien de sentido aleatoriamente
            Random rnd = new Random();

            int signo = (int)(rnd.nextDouble() * 10.0);

            while(signo<5){    //forma barata de no tener if. sugerencias?
                signo=-1;
                break;
            }
           while(signo>=5){
                 signo=1;
                 break;
            }

            policia.dx = policia.dx*(signo);
            policia.dy = policia.dy*(signo)*(-1);
    }

    @Override
    public void colision(Semaforo semaforo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

